<?php

require_once('IComposedSearch.php') ;
require_once('ISearchable.php') ;

class AdvancedSearch implements IComposedSearch, ISearchable{
    
    private $m_searchPatterns = array() ;
    
    public function add(ISearchable $a_pattern, $operator = "AND") {
        $this->m_searchPatterns[] = array($a_pattern, $operator) ;
    }
    
    public function remove() {}
    
    public function getChilds() {
        
        return $m_searchPatterns ;
        
    }
    
    public function isSelected(MemberClass $a_member) {
        
        // Jag har kollat igenom logiken här, kan inte se att den ska vara fel...
        // Det kanske inte är snyggaste lösningen iofs :)
        
            
        $returnAnd = TRUE ;
        $returnOr = FALSE ;
        
        foreach($this->m_searchPatterns as $pattern) {
            if($pattern[0]->isSelected($a_member) === FALSE) {
                $returnAnd = FALSE ;
            } else {
                $returnOr = TRUE ;
            }
            
            if($pattern[1] === "AND") {
                $return = $returnAnd ;
            } else {
                $return = $returnOr ;
            }
            
        }
        
        return $return ;
    }
    
}
